﻿using System;
using System.Collections.Generic;
using System.Data;
using System.Data.SqlClient;
using SGAEntidades;
using SGABDUtil;
using SGAInterfaces;

namespace SGAAccesoDatos
{
    public class Usuario : IUsuario
    {
        #region Miembros de IUsuario

        public bool ValidarAcceso(UsuarioInfo oUsuario)
        {
            var sqlParm = new SqlParameter[2];
            Boolean bExito = false;

            sqlParm[0] = new SqlParameter("@Id_Usuario", SqlDbType.VarChar);
            if (oUsuario.Usuario != null) { sqlParm[0].Value = oUsuario.Usuario; } else { sqlParm[0].Value = DBNull.Value; }

            sqlParm[1] = new SqlParameter("@Contrasena", SqlDbType.VarChar);
            if (oUsuario.Contraseña != null) { sqlParm[1].Value = oUsuario.Contraseña; } else { sqlParm[1].Value = DBNull.Value; }

            using (
                var drd = SqlHelper.ExecuteReader(SqlHelper.ConnectionStringDistributedTransaction,
                                                  CommandType.StoredProcedure, "SGA_SP_VALIDAR_USUARIO", sqlParm))
            {
                if (drd != null)
                {
                    if (drd.HasRows)
                    {
                        drd.Read();
                        bExito = Convert.ToBoolean(drd.GetValue(0));
                    }
                }
            }

            return bExito;

        }

        public UsuarioInfo Consultar(UsuarioInfo oUsuario)
        {
            var sqlParm = new SqlParameter[3];
            var oUsuarioEnt = new UsuarioInfo();

            sqlParm[0] = new SqlParameter("@Id_Usuario", SqlDbType.VarChar);
            if (oUsuario.Usuario != null) { sqlParm[0].Value = oUsuario.Usuario; } else { sqlParm[0].Value = DBNull.Value; }

            sqlParm[1] = new SqlParameter("@Nombre", SqlDbType.VarChar);
            if (oUsuario.Nombre != null) { sqlParm[1].Value = oUsuario.Nombre; } else { sqlParm[1].Value = DBNull.Value; }

            sqlParm[2] = new SqlParameter("@Id_Estado", SqlDbType.VarChar);
            if (oUsuario.IdEstado != null) { sqlParm[2].Value = oUsuario.IdEstado; } else { sqlParm[2].Value = DBNull.Value; }

            using (
                var drd = SqlHelper.ExecuteReader(SqlHelper.ConnectionStringDistributedTransaction,
                                      CommandType.StoredProcedure, "SGA_SP_CONSULTAR_USUARIO", sqlParm))
            {
                if (drd != null)
                {
                    if (drd.HasRows)
                    {
                        drd.Read();
                        oUsuarioEnt = new UsuarioInfo(drd.GetString(0).Trim(), null, drd.GetString(1).Trim(), drd.GetDateTime(2), Int32.Parse(drd.GetValue(3).ToString()),
                            drd.GetString(4).Trim(), drd.GetString(5).Trim());
                    }
                }
            }
            return oUsuarioEnt;

        }

        public IList<UsuarioInfo> Listar(UsuarioInfo oUsuario)
        {
            throw new NotImplementedException();
        }

        #endregion
    }
}
